package com.talkative.plan.util;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;

import java.io.ByteArrayInputStream;
import java.util.Date;

/**
 * @author : best
 * @date : 2022/10/3
 */
public class AliOssUtil {
    //存储空间所在的城市域名
    public static final String endpoint = "oss-cn-beijing.aliyuncs.com";
    //账号的key -保密
    public static final String accessKeyId = "LTAI5t5ZPUfK5nTEUPCwzSxP";
    //账号的密钥 -保密
    public static final String accessKeySecret = "BdWzLO0B8Z7YhzBK3Hx2CvQJudyo32";
    //存储空间名
    public static final String bucketName = "datazz2209";
    //阿里云 Oss的客户端对象
    private static OSS client;
    static {
        //完成实例化
        client = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    }
    /**
     * 上传资源,新增文件
     * @param objname 上传的文件名，要求唯一
     * @param data 文件内容
     * @param date 访问地址有效期
     * @return 返回 访问地址*/
    public static String upload(String objname, byte[] data, Date date){
        //上传文件内容
        client.putObject(bucketName,objname,new ByteArrayInputStream(data));
        //返回访问地址
        return getUrl(objname,date);
    }
    /**
     * 验证对象是否存在
     * @param obj 文件名*/
    public static boolean exists(String obj){
        return client.doesObjectExist(bucketName, obj);
    }
    /**
     * 删除文件
     * @param obj 文件名*/
    public static boolean delete(String obj){
        try{
            client.deleteObject(bucketName,obj);
            return true;
        }catch (Exception e){
            return false;
        }
    }
    /**
     * 获取对象的访问地址
     * @param obj 文件名
     * @param date 访问地址的有效期*/
    public static String getUrl(String obj, Date date){
        return client.generatePresignedUrl(bucketName,obj,date).toString();
    }
}
